<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of evaluation_constraints_controller
 *
 * @author wilavel
 */
class EvaluationConstraintsController extends AppController {

    //put your code here
    var $name = "EvaluationConstraints";

    public function index($evaluation_id) {
        $this->set('evaluation_id', $evaluation_id);
        $this->EvaluationConstraint->recursive = 0;
        $this->set('condiciones', $this->EvaluationConstraint->find('all', array('conditions' => array('EvaluationConstraint.final_evaluation_id' => $evaluation_id, 'Constraint.tipo' => 'Proyecto'), 'fields' => array('FinalEvaluation.cerrado', 'EvaluationConstraint.id', 'EvaluationConstraint.descripcion', 'Constraint.nombre'))));
    }

    public function index_observations($evaluation_id) {
        $this->set('evaluation_id', $evaluation_id);
        $this->EvaluationConstraint->recursive = 0;
        $this->set('condiciones', $this->EvaluationConstraint->find('all', array('conditions' => array('EvaluationConstraint.final_evaluation_id' => $evaluation_id, 'Constraint.tipo' => 'Observación'), 'fields' => array('FinalEvaluation.cerrado', 'EvaluationConstraint.id', 'EvaluationConstraint.descripcion'))));
    }

    public function add($evaluation_id) {
        $this->set('evaluation_id', $evaluation_id);
        $this->set('constraints', $this->EvaluationConstraint->Constraint->find('list', array('fields' => array('Constraint.id', 'Constraint.nombre'), 'conditions' => array('Constraint.tipo' => 'Proyecto'))));
        if (!empty($this->data)) {
            $this->data['EvaluationConstraint']['user_id'] = $this->Auth->user('id');
            if ($this->EvaluationConstraint->saveAll($this->data)) {
                $this->Session->setFlash('Registro adicionado con éxito', 'flash_custom');
                $this->redirect(array('controller' => 'EvaluationConstraints', 'action' => 'index', $evaluation_id));
            }
        }
    }

    public function add_observations($evaluation_id) {
        $this->set('evaluation_id', $evaluation_id);
        $this->set('constraints', $this->EvaluationConstraint->Constraint->find('list', array('fields' => array('Constraint.id', 'Constraint.nombre'), 'conditions' => array('Constraint.tipo' => 'Observación'))));
        if (!empty($this->data)) {
            $this->data['EvaluationConstraint']['user_id'] = $this->Auth->user('id');
            if ($this->EvaluationConstraint->saveAll($this->data)) {
                $this->Session->setFlash('Registro adicionado con éxito', 'flash_custom');
                $this->redirect(array('controller' => 'EvaluationConstraints', 'action' => 'index_observations', $evaluation_id));
            }
        }
    }

    public function edit($constraint_id) {
        $this->set('constraints', $this->EvaluationConstraint->Constraint->find('list', array('fields' => array('Constraint.id', 'Constraint.nombre'), 'conditions' => array('Constraint.tipo' => 'Proyecto'))));
        if (empty($this->data)) {
            $this->data = $this->EvaluationConstraint->find('first', array('conditions' => array('EvaluationConstraint.id' => $constraint_id), 'fields' => array('EvaluationConstraint.id', 'EvaluationConstraint.descripcion', 'Constraint.nombre', 'EvaluationConstraint.final_evaluation_id', 'EvaluationConstraint.constraint_id')));
        } else {
            if ($this->EvaluationConstraint->saveAll($this->data)) {
                $this->Session->setFlash('Registro editado con éxito', 'flash_custom');
                $this->redirect(array('controller' => 'EvaluationConstraints', 'action' => 'index', $this->data['EvaluationConstraint']['final_evaluation_id']));
            }
        }
    }

    public function edit_observations($constraint_id) {
        $this->set('constraints', $this->EvaluationConstraint->Constraint->find('list', array('fields' => array('Constraint.id', 'Constraint.nombre'), 'conditions' => array('Constraint.tipo' => 'Observación'))));
        if (empty($this->data)) {
            $this->data = $this->EvaluationConstraint->find('first', array('conditions' => array('EvaluationConstraint.id' => $constraint_id), 'fields' => array('EvaluationConstraint.id', 'EvaluationConstraint.descripcion', 'Constraint.nombre', 'EvaluationConstraint.final_evaluation_id', 'EvaluationConstraint.constraint_id')));
        } else {
            if ($this->EvaluationConstraint->saveAll($this->data)) {
                $this->Session->setFlash('Registro editado con éxito', 'flash_custom');
                $this->redirect(array('controller' => 'EvaluationConstraints', 'action' => 'index_observations', $this->data['EvaluationConstraint']['final_evaluation_id']));
            }
        }
    }

    public function edit_uprising($constraint_id) {
        App::Import('model', 'FinalEvaluation');
        $evaluacionFinal = new FinalEvaluation();
        $evaluacionFinal->recursive = -1;

        App::Import('model', 'Proyect');
        $proyecto = new Proyect();
        $proyecto->recursive = -1;

        $this->set('constraints', $this->EvaluationConstraint->Constraint->find('list', array('fields' => array('Constraint.id', 'Constraint.nombre'), 'conditions' => array('Constraint.tipo' => 'Proyecto'))));
        if (empty($this->data)) {
            $this->data = $this->EvaluationConstraint->find('first', array('conditions' => array('EvaluationConstraint.id' => $constraint_id), 'fields' => array('EvaluationConstraint.observaciones_levantamiento', 'EvaluationConstraint.fecha_levantamiento', 'EvaluationConstraint.calificacion', 'EvaluationConstraint.id', 'EvaluationConstraint.descripcion', 'Constraint.nombre', 'EvaluationConstraint.final_evaluation_id', 'EvaluationConstraint.constraint_id', 'EvaluationConstraint.fecha_visita_reconocimiento')));
        } else {
            //SE ENVIAN DATOS
            if ($this->data['EvaluationConstraint']['calificacion'] == "LEVANTADO") {

                //Buscar la evaluación final a la que pertenece el condicionamiento,
                $proyect_id = $evaluacionFinal->field('FinalEvaluation.proyect_id', array('FinalEvaluation.id' => $this->data['EvaluationConstraint']['final_evaluation_id']));

                //Buscar el id del proyecto y enviarlo a la función que envia correos
                $codigo = $proyecto->field('Proyect.codigo', array('Proyect.id' => $proyect_id));

                //CALIFICACION ES IGUAL A LEVANTADO
                if (stristr($this->data['EvaluationConstraint']['archivo']['name'], ".pdf")) {
                    //EL ARCHIVO EXISTE.
                    if ($this->EvaluationConstraint->saveAll($this->data)) {

                        $rutaArchivo = APP . "webroot" . "/" . "files" . "/" . $codigo;
                        if (!is_dir($rutaArchivo)) {
                            if (!mkdir($rutaArchivo)) {
                                echo "error creando archivo";
                                //redirect
                            }
                        }
                        $nombreArchivo = "LEVANTAMIENTO-$codigo-$constraint_id.pdf";
                        $rutaArchivo.= "/" . $nombreArchivo;


                        if (move_uploaded_file($this->data['EvaluationConstraint']['archivo']['tmp_name'], $rutaArchivo)) {

                            //Se envia el correo informando que se levanto el condicionamiento.
                            $this->send_mail($codigo, $this->data, true);

                            $this->Session->setFlash('Registro modificado correctamente', 'flash_custom');
                            $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
                        }
                    } else {
                        //NO PUDO GUARDAR LOS DATOS
                        $this->Session->setFlash('Error Guardando datos', 'flash_custom');
                        $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
                    }
                } else {
                    $this->Session->setFlash('ERROR GUARDANDO LOS DATOS. Si la calificación es LEVANTADO, es obligatorio adjuntar archivo tipo pdf', 'flash_custom');
                    $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
                }
            } else {
                //LA CALIFICACION ES DISTINTA A LEVANTADO
                if ($this->EvaluationConstraint->saveAll($this->data)) {
                    //SI EL ARCHIVO EXISTE SE GUARDA.
                    if (stristr($this->data['EvaluationConstraint']['archivo']['name'], ".pdf")) {

                        $codigo = $this->Session->read('cod');
                        $rutaArchivo = APP . "webroot" . "/" . "files" . "/" . $codigo;
                        if (!is_dir($rutaArchivo)) {
                            if (!mkdir($rutaArchivo)) {
                                echo "error creando archivo";
                                //redirect
                            }
                        }
                        $nombreArchivo = "LEVANTAMIENTO-$codigo-$constraint_id.pdf";
                        $rutaArchivo.= "/" . $nombreArchivo;

                        if (move_uploaded_file($this->data['EvaluationConstraint']['archivo']['tmp_name'], $rutaArchivo)) {
                            $this->Session->setFlash('Registro Adicionado correctamente', 'flash_custom');
                            $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
                        }
                    }

                    //Buscar la evaluación final a la que pertenece el condicionamiento,
                    $proyect_id = $evaluacionFinal->field('FinalEvaluation.proyect_id', array('FinalEvaluation.id' => $this->data['EvaluationConstraint']['final_evaluation_id']));

                    //Buscar el id del proyecto y enviarlo a la función que envia correos
                    $codigo = $proyecto->field('Proyect.codigo', array('Proyect.id' => $proyect_id));

                    //Se envia el correo informando que no se levanto el condicionamiento.
                    $this->send_mail($codigo, $this->data, false);

                    $this->Session->setFlash('Registro modificado correctamente', 'flash_custom');
                    $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
                } else {
                    $this->Session->setFlash('Error Guardando datos', 'flash_custom');
                }
            }
        }
    }

    public function delete($id, $evaluation_id) {
        if ($this->EvaluationConstraint->delete($id)) {
            $this->Session->setFlash('Registro borrado con éxito', 'flash_custom');
            $this->redirect(array('controller' => 'EvaluationConstraints', 'action' => 'index', $evaluation_id));
        }
    }

    public function delete_observations($id, $evaluation_id) {
        if ($this->EvaluationConstraint->delete($id)) {
            $this->Session->setFlash('Registro borrado con éxito', 'flash_custom');
            $this->redirect(array('controller' => 'EvaluationConstraints', 'action' => 'index_observations', $evaluation_id));
        }
    }

    public function juridic_index($evaluation_id) {
        $this->layout = "ajax";
        $this->set('evaluation_id', $evaluation_id);
        $this->EvaluationConstraint->recursive = 0;
        $this->set('condiciones', $this->EvaluationConstraint->find('all', array('conditions' => array('EvaluationConstraint.final_evaluation_id' => $evaluation_id, 'Constraint.tipo' => 'Juridico'), 'fields' => array('EvaluationConstraint.id', 'EvaluationConstraint.descripcion', 'Constraint.nombre', 'FinalEvaluation.cerrado'))));
    }

    public function juridic_add($evaluation_id) {
        $this->set('evaluation_id', $evaluation_id);
        $this->set('constraints', $this->EvaluationConstraint->Constraint->find('list', array('fields' => array('Constraint.id', 'Constraint.nombre'), 'conditions' => array('Constraint.tipo' => 'Juridico'))));
        if (!empty($this->data)) {
            $this->data['EvaluationConstraint']['user_id'] = $this->Auth->user('id');
            if ($this->EvaluationConstraint->saveAll($this->data)) {
                $this->Session->setFlash('Registro adicionado con éxito', 'flash_custom');
                $this->redirect(array('controller' => 'EvaluationConstraints', 'action' => 'juridic_index', $evaluation_id));
            }
        }
    }

    public function juridic_edit($constraint_id) {
        $this->set('constraints', $this->EvaluationConstraint->Constraint->find('list', array('fields' => array('Constraint.id', 'Constraint.nombre'), 'conditions' => array('Constraint.tipo' => 'Juridico'))));
        if (empty($this->data)) {
            $this->data = $this->EvaluationConstraint->find('first', array('conditions' => array('EvaluationConstraint.id' => $constraint_id), 'fields' => array('EvaluationConstraint.id', 'EvaluationConstraint.descripcion', 'Constraint.nombre', 'EvaluationConstraint.final_evaluation_id')));
        } else {
            if ($this->EvaluationConstraint->saveAll($this->data)) {
                $this->Session->setFlash('Registro editado con éxito', 'flash_custom');
                $this->redirect(array('controller' => 'EvaluationConstraints', 'action' => 'juridic_index', $this->data['EvaluationConstraint']['final_evaluation_id']));
            }
        }
    }

    public function juridic_delete($id, $evaluation_id) {
        if ($this->EvaluationConstraint->delete($id)) {
            $this->Session->setFlash('Registro borrado con éxito', 'flash_custom');
            $this->redirect(array('controller' => 'EvaluationConstraints', 'action' => 'juridic_index', $evaluation_id));
        }
    }

    public function total_index() {
        if ($this->RequestHandler->isAjax()) {
            $this->layout = "ajax";
        } else {
            $this->layout = "default";
        }
        App::Import('model', 'FinalEvaluation');
        $evaluacionFinal = new FinalEvaluation();

        App::Import('model', 'Resolution');
        $resolucion = new Resolution();

        $proyect_id = $this->Session->read('proy_id');

        $tiene_resolucion = $resolucion->find('first', array('conditions' => array('Resolution.proyect_id' => $proyect_id), 'fields' => array('Resolution.id')));

        App::Import('model', 'Proyect');
        $proyect = new Proyect();
        $publicado = $proyect->field('Proyect.publicado', array('Proyect.id' => $proyect_id));
        $renuncio = $proyect->field('Proyect.renuncio', array('Proyect.id' => $proyect_id));

        $this->set("codigo", $this->Session->read('cod'));
        $this->set("proyect_id", $proyect_id);
        $this->set("tiene_resolucion", $tiene_resolucion);

        $evaluacion = $evaluacionFinal->find('first', array('conditions' => array('FinalEvaluation.proyect_id' => $proyect_id), 'order' => array('FinalEvaluation.id' => 'DESC'),
            'fields' => array('FinalEvaluation.calificacion_elegibilidad_integral', 'FinalEvaluation.calificacion_aspectos_ambientales', 'FinalEvaluation.calificacion_aspectos_financieros', 'FinalEvaluation.calificacion_aspectos_sociales', 'FinalEvaluation.calificacion_aspectos_productivos', 'FinalEvaluation.calificacion_anexos', 'FinalEvaluation.calificacion_ubicacion', 'FinalEvaluation.calificacion_area_util', 'FinalEvaluation.calificacion_suelos', 'FinalEvaluation.calificacion_claseV', 'FinalEvaluation.calificacion_mejoras_santuarias')));

        //calculo la viabilidad integral
        $calificacion_faseIIB = "Cumple";

        $criterios_evaluacion = "Cumple";
        if ($evaluacion['FinalEvaluation']['calificacion_anexos'] != 'Cumple' || $evaluacion['FinalEvaluation']['calificacion_ubicacion'] != 'Cumple' || $evaluacion['FinalEvaluation']['calificacion_area_util'] != "Cumple" || $evaluacion['FinalEvaluation']['calificacion_suelos'] != "Cumple" || $evaluacion['FinalEvaluation']['calificacion_claseV'] != "Cumple" || $evaluacion['FinalEvaluation']['calificacion_mejoras_santuarias'] != "Cumple") {
            $criterios_evaluacion = "No cumple";
        }

        //busco el id del proyecto que tiene la evaluación
        App::Import('model', 'Property');
        $property = new Property();
        $property->recursive = -1;

        App::Import('model', 'FinalEvaluationAnnex');
        $finalEvaluationAnnexes = new FinalEvaluationAnnex();
        $finalEvaluationAnnexes->recursive = -1;

        App::Import('model', 'EvaluationAppraisal');
        $evaluationAppraisal = new EvaluationAppraisal();
        $evaluationAppraisal->recursive = -1;

        App::Import('model', 'TitleStudy');
        $titleStudy = new TitleStudy();
        $titleStudy->recursive = -1;

        App::Import('model', 'QualityControl');
        $qualityControl = new QualityControl();
        $qualityControl->recursive = -1;
        App::Import('model', 'TitleStudyClaim');
        $TitleStudyClaim = new TitleStudyClaim();

        //busco los avaluos relacionados con esta evaluación

        $anexos = $finalEvaluationAnnexes->find('all', array('conditions' => array('FinalEvaluationAnnex.final_evaluation_id' => $evaluacion['FinalEvaluation']['id'])));

        $calificacion_avaluos = "Cumple";
        foreach ($anexos as $anexo) {
            if ($evaluationAppraisal->field('calificacion', array('EvaluationAppraisal.id' => $anexo['FinalEvaluationAnnex']['evaluation_appraisal_id'])) != 1) {
                $calificacion_avaluos = "No cumple";
            }
        }

        //Busco el ultimo estudio de titulo de cada predio
        $calificacion_juridica = "Cumple";

        $predios = $property->find('all', array('conditions' => array('Property.proyect_id' => $proyect_id), 'fields' => array('Property.id')));

        foreach ($predios as $predio) {
            //busco el ultimo estudio de titulo del predio.

            $control = $qualityControl->find('first', array('conditions' => array('QualityControl.property_id' => $predio['Property']['id']), 'fields' => array('QualityControl.calificacion'), 'order' => array('QualityControl.id DESC')));
            $titulo = $titleStudy->find('first', array('conditions' => array('TitleStudy.property_id' => $predio['Property']['id']), 'fields' => array('TitleStudy.calificacion', 'TitleStudy.id'), 'order' => array('TitleStudy.id DESC')));

            if ($titulo['TitleStudy']['calificacion'] != "1") {

                if ($reclamacion = $TitleStudyClaim->find('first', array('recursive' => -1, 'conditions' => array('TitleStudyClaim.title_study_id' => $titulo['TitleStudy']['id']), 'order' => array('TitleStudyClaim.id DESC')))) {
                    if ($reclamacion['TitleStudyClaim']['calificacion'] != "Desvirtúa la causal") {
                        $calificacion_juridica = "No cumple";
                    }
                } else {
                    $calificacion_juridica = "No cumple";
                }
            }
            if (!empty($control)) {
                if ($control['QualityControl']['calificacion'] != 4) {
                    $calificacion_juridica = "No cumple";
                }
            } else {
                $calificacion_juridica = "No cumple";
            }
        }

        App::Import('Model', 'Poll');
        $poll = new Poll();
        $poll->recursive = -1;

        $encuesta = $poll->find('first', array('conditions' => array('Poll.proyect_id' => $proyect_id), 'fields' => array('Poll.verificacion_fase_uno', 'Poll.visto_bueno', 'Poll.calificacion_caracteristicas_biofisicas', 'Poll.calificacion_sociales', 'Poll.calificacion_economicos', 'Poll.calificacion_ambientales',), 'order' => array('Poll.id DESC')));

        $calificacion_encuesta = '';

        if ($encuesta['Poll']['calificacion_caracteristicas_biofisicas'] == null or $encuesta['Poll']['calificacion_sociales'] == null
                or $encuesta['Poll']['calificacion_economicos'] == null or $encuesta['Poll']['calificacion_ambientales'] == null or
                $encuesta['Poll']['calificacion_caracteristicas_biofisicas'] == '' or $encuesta['Poll']['calificacion_sociales'] == ''
                or $encuesta['Poll']['calificacion_economicos'] == '' or $encuesta['Poll']['calificacion_ambientales'] == ''
        ) {
            $calificacion_encuesta = 'No cumple';
        } else if ($encuesta['Poll']['verificacion_fase_uno'] == null or $encuesta['Poll']['visto_bueno'] == null or
                $encuesta['Poll']['verificacion_fase_uno'] == 'Sin registro' or $encuesta['Poll']['visto_bueno'] == 'Sin registro') {
            $calificacion_encuesta = 'No cumple';
        } else if ($encuesta['Poll']['calificacion_caracteristicas_biofisicas'] == 'No cumple' or $encuesta['Poll']['calificacion_sociales'] == 'No cumple'
                or $encuesta['Poll']['calificacion_economicos'] == 'No cumple' or $encuesta['Poll']['calificacion_ambientales'] == 'No cumple' or
                $encuesta['Poll']['verificacion_fase_uno'] == 'No' or $encuesta['Poll']['visto_bueno'] == null
        ) {
            $calificacion_encuesta = 'No cumple';
        } else {
            $calificacion_encuesta = 'Cumple';
        }

        App::Import('Model', 'PollClaim');
        $pollClaim = new PollClaim();
        $pollClaim->recursive = -1;

        //busco la calificacion de la ultima reclamacion de fase IIA
        $calificacion_reclamacion_IIA = $pollClaim->field('PollClaim.calificacion', array('PollClaim.proyect_id' => $proyect_id, 'PollClaim.tipo' => 1), 'PollClaim.id DESC');
        if ($calificacion_reclamacion_IIA == 'Viable') {
            $calificacion_encuesta = 'Cumple';
        }

        if ($criterios_evaluacion != "Cumple" ||
                $evaluacion['FinalEvaluation']['calificacion_aspectos_productivos'] != "Cumple" ||
                $calificacion_avaluos != "Cumple" ||
                $evaluacion['FinalEvaluation']['calificacion_aspectos_sociales'] != "Cumple" ||
                $evaluacion['FinalEvaluation']['calificacion_aspectos_financieros'] != "Cumple" ||
                $evaluacion['FinalEvaluation']['calificacion_aspectos_ambientales'] != "Cumple" ||
                $evaluacion['FinalEvaluation']['calificacion_elegibilidad_integral'] != "Elegible" ||
                $calificacion_juridica != "Cumple" ||
                $calificacion_encuesta != "Cumple") {
            $calificacion_faseIIB = "No cumple";
        }

        $mensaje = "";

        if ($criterios_evaluacion != "Cumple") {
            $mensaje .= 'Criterios de evaluación ' . $criterios_evaluacion;
        }
        if ($evaluacion['FinalEvaluation']['calificacion_aspectos_productivos'] != "Cumple") {
            $mensaje .= 'Calificación aspectos productivos ' . $evaluacion['FinalEvaluation']['calificacion_aspectos_productivos'];
        }
        if ($calificacion_avaluos != "Cumple") {
            $mensaje .= 'Calificación avaluos ' . $calificacion_avaluos;
        }
        if ($evaluacion['FinalEvaluation']['calificacion_aspectos_sociales'] != "Cumple") {
            $mensaje .= 'Calificación aspectos sociales ' . $evaluacion['FinalEvaluation']['calificacion_aspectos_sociales'];
        }
        if ($evaluacion['FinalEvaluation']['calificacion_aspectos_financieros'] != "Cumple") {
            $mensaje .= 'Calificación aspectos financieros ' . $evaluacion['FinalEvaluation']['calificacion_aspectos_financieros'];
        }
        if ($evaluacion['FinalEvaluation']['calificacion_aspectos_ambientales'] != "Cumple") {
            $mensaje .= 'Calificación aspectos ambientales ' . $evaluacion['FinalEvaluation']['calificacion_aspectos_ambientales'];
        }
        if ($evaluacion['FinalEvaluation']['calificacion_elegibilidad_integral'] != "Elegible") {
            $mensaje .= 'Calificación elegibilidad integral' . $evaluacion['FinalEvaluation']['calificacion_elegibilidad_integral'];
        }
        if ($calificacion_juridica != "Cumple") {
            $mensaje .= 'Calificación juridica ' . $calificacion_juridica;
        }
        if ($calificacion_encuesta != "Cumple") {
            $mensaje .= 'Calificación encuesta ' . $calificacion_encuesta;
        }

        if ($calificacion_faseIIB == 'No cumple') {
            $this->Session->setFlash('Este proyecto no superó fase IIB. ' . $mensaje, 'flash_custom');
            $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
        }

        if ($proyect_id != "") {
            if ($publicado == 1 and $renuncio == 0) {
                $evaluation_id = $evaluacionFinal->field('FinalEvaluation.id', array('FinalEvaluation.proyect_id' => $proyect_id), 'FinalEvaluation.id DESC');
                $this->set('evaluation_id', $evaluation_id);
                $this->EvaluationConstraint->recursive = 1;
                $this->set('condiciones', $this->EvaluationConstraint->find('all', array('conditions' => array('EvaluationConstraint.final_evaluation_id' => $evaluation_id), 'fields' => array('EvaluationConstraint.id', 'EvaluationConstraint.calificacion', 'Constraint.nombre', 'EvaluationConstraint.observaciones_levantamiento', 'EvaluationConstraint.fecha_levantamiento', 'EvaluationConstraint.descripcion'))));
            } else {
                if ($renuncio == 1) {
                    $this->Session->setFlash('El propietario del predio renuncio.', 'flash_custom');
                } else {
                    $this->Session->setFlash('El proyecto aún no ha sido publicado.', 'flash_custom');
                }
                $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
            }
        } else {
            $this->Session->setFlash('No ha seleccionado Proyecto', 'flash_custom');
            $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
        }
    }

    public function print_letter($evaluation_id) {
        $this->layout = "pdf";
        $this->EvaluationConstraint->recursive = 1;
        $proyect_id = $this->Session->read('proy_id');
        $options = array();
        $options['joins'] = array(
            array(
                'table' => 'proposers',
                'type' => 'left',
                'alias' => 'Proposer',
                'conditions' => array('Proyect.id=Proposer.proyect_id'),
            ),
            array(
                'table' => 'calls',
                'type' => 'left',
                'alias' => 'Call',
                'conditions' => array('Call.id=Proyect.call_id'),
            ),
            array(
                'table' => 'branches',
                'type' => 'left',
                'alias' => 'Branch',
                'conditions' => array('Branch.id=Proyect.branch_id'),
            ),
            array(
                'table' => 'cities',
                'type' => 'left',
                'alias' => 'City',
                'conditions' => array('City.id=Proposer.city_id'),
            ),
            array(
                'table' => 'departaments',
                'type' => 'left',
                'alias' => 'Departamento',
                'conditions' => array('Proyect.departament_id=Departamento.id'),
            ),
            array(
                'table' => 'departaments',
                'type' => 'left',
                'alias' => 'Departament',
                'conditions' => array('City.departament_id=Departament.id'),
            ),
        );
        $options['conditions'] = array('Proyect.id' => $proyect_id);
        $options['fields'] = array('Departamento.name', 'Proposer.nombre', 'Proposer.numero_identificacion', 'Proposer.proposer_type', 'Proposer.rep_nombres', 'Proposer.rep_apellidos', 'Proposer.rep_cedula', 'Proposer.direccion', 'Proposer.telefono_fijo', 'Proposer.telefono_celular', 'Departament.name', 'City.name', 'Branch.director', 'Branch.genero', 'Proyect.codigo', 'Proyect.id', 'Call.nombre', 'Branch.nombre');

        App::Import('model', 'Proyect');
        $Proyect = new Proyect();

        $Proyect->recursive = -1;
        $proponente = $Proyect->find('first', $options);
        $this->set('proponente', $proponente);
        $this->set('condiciones', $this->EvaluationConstraint->find('all', array('conditions' => array('EvaluationConstraint.final_evaluation_id' => $evaluation_id, 'NOT' => array('EvaluationConstraint.constraint_id' => '7')), 'fields' => array('EvaluationConstraint.id', 'EvaluationConstraint.calificacion', 'Constraint.nombre', 'Constraint.id', 'Constraint.tipo', 'EvaluationConstraint.observaciones_levantamiento', 'EvaluationConstraint.fecha_levantamiento', 'EvaluationConstraint.descripcion'))));
    }

    public function rejection_letter($evaluation_id) {
        $this->layout = "pdf";
        $this->EvaluationConstraint->recursive = 1;
        $proyect_id = $this->Session->read('proy_id');
        $options = array();
        $options['joins'] = array(
            array(
                'table' => 'proposers',
                'type' => 'left',
                'alias' => 'Proposer',
                'conditions' => array('Proyect.id=Proposer.proyect_id'),
            ),
            array(
                'table' => 'calls',
                'type' => 'left',
                'alias' => 'Call',
                'conditions' => array('Call.id=Proyect.call_id'),
            ),
            array(
                'table' => 'branches',
                'type' => 'left',
                'alias' => 'Branch',
                'conditions' => array('Branch.id=Proyect.branch_id'),
            ),
            array(
                'table' => 'cities',
                'type' => 'left',
                'alias' => 'City',
                'conditions' => array('City.id=Proposer.city_id'),
            ),
            array(
                'table' => 'departaments',
                'type' => 'left',
                'alias' => 'Departamento',
                'conditions' => array('Proyect.departament_id=Departamento.id'),
            ),
            array(
                'table' => 'departaments',
                'type' => 'left',
                'alias' => 'Departament',
                'conditions' => array('City.departament_id=Departament.id'),
            ),
        );

        $options['conditions'] = array('Proyect.id' => $proyect_id);
        $options['fields'] = array('Departamento.name', 'Proposer.nombre', 'Proposer.numero_identificacion', 'Proposer.proposer_type', 'Proposer.rep_nombres', 'Proposer.rep_apellidos', 'Proposer.rep_cedula', 'Proposer.direccion', 'Proposer.telefono_fijo', 'Proposer.telefono_celular', 'Departament.name', 'City.name', 'Branch.director', 'Proyect.codigo', 'Proyect.id', 'Proyect.fecha_publicacion', 'Call.nombre', 'Branch.nombre');

        App::Import('model', 'Proyect');
        $Proyect = new Proyect();

        $Proyect->recursive = -1;
        $proponente = $Proyect->find('first', $options);
        $this->set('proponente', $proponente);
        $this->set('condiciones', $this->EvaluationConstraint->find('all', array('conditions' => array('EvaluationConstraint.final_evaluation_id' => $evaluation_id), 'fields' => array('EvaluationConstraint.id', 'EvaluationConstraint.calificacion', 'Constraint.nombre', 'Constraint.id', 'Constraint.tipo', 'EvaluationConstraint.observaciones_levantamiento', 'EvaluationConstraint.fecha_levantamiento', 'EvaluationConstraint.descripcion'))));
    }

    private function send_mail($codigo, $data, $levantado) {
        App::import('Vendor', 'ClassPhpmailer', array('file' => 'phpmailer/class.phpmailer.php'));
        $this->layout = "ajax";

        if ($levantado) {
            $body.="<p>Se levantó el condicionamiento " . $data['Constraint']['nombre'] . " con la descripción: " . $data['EvaluationConstraint']['descripcion'] . " del proyecto " . $codigo . ".</p>";
        } else {
            $body.="<p>No fue posible levantar el condicionamiento " . $data['Constraint']['nombre'] . " con la descripción: " . $data['EvaluationConstraint']['descripcion'] . " del proyecto " . $codigo . ".</p>";
        }
        $body.="<br>";
        if ($data['EvaluationConstraint']['observaciones_levantamiento'] != "")
            $body.="<p>Con las siguiente observaciones: " . $data['EvaluationConstraint']['observaciones_levantamiento'] . "</p>";

//director territorial

        $mail = new PHPMailer();

//Luego tenemos que iniciar la validación por SMTP: 
        $mail->IsSMTP();
        $mail->SMTPAuth = true;
        $mail->Host = "ssl://smtp.gmail.com"; // SMTP a utilizar. Por ej. smtp.elserver.com 
        $mail->Username = "sitrural@gmail.com"; // Correo completo a utilizar 
        $mail->Password = "laropavieja.net.co"; // Contraseña 
        $mail->Port = 465; // Puerto a utilizar 
//Con estas pocas líneas iniciamos una conexión con el SMTP. Lo que ahora deberíamos hacer, es configurar el mensaje a enviar, el //From, etc. 
        $mail->From = "sitrural@gmail.com"; // Desde donde enviamos (Para mostrar) 
        $mail->FromName = "Soporte aplicativo tierras";

//Estas dos líneas, cumplirían la función de encabezado (En mail() usado de esta forma: “From: Nombre <correo@dominio.com>”) de //correo. 
// Esta es la dirección a donde enviamos 

        $mail->AddAddress('joseolmedoagudelosalazar@gmail.com');
        $mail->AddAddress('blalvarez@incoder.gov.co');
        $mail->AddAddress('jjneirasan@yahoo.com');
        $mail->AddAddress('earizah@gmail.com');
        $mail->AddAddress('gureto7@hotmail.com');
        $mail->AddAddress('aisaza@incoder.gov.co');
        $mail->AddAddress('oediaz@incoder.gov.co');

        $mail->IsHTML(true);
//$mail->IsHTML(true); // El correo se envía como HTML 
        if ($levantado) {
            $mail->Subject = utf8_decode("LEVANTAMIENTO DEL CONDICIONAMIENTO " . $codigo); // Este es el título del email. 
        } else {
            $mail->Subject = utf8_decode("NO LEVANTAMIENTO DEL CONDICIONAMIENTO " . $codigo); // Este es el título del email. 
        }

        $mail->Body = utf8_decode($body); // Mensaje a enviar 
//$mail->SMTPDebug = 1;

        $mail->Send(); // Envía el correo. 
    }

    public function report() {
        $this->layout = 'csv';
        App::Import('model', 'FinalEvaluation');
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        date_default_timezone_set("America/Bogota");
        $filename = "Reporte_Condicionamientos_" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');

        //Busco los proyectos que tengan un condicionamiento.
        $sql = "SELECT distinct(proyect.id), proyect.codigo, branch.nombre, proyect.fecha_publicacion FROM evaluation_constraints evaluationConstraint
                LEFT JOIN final_evaluations finalEvaluation ON finalEvaluation.id = evaluationConstraint.final_evaluation_id
                LEFT JOIN proyects proyect ON proyect.id =  finalEvaluation.proyect_id
                LEFT JOIN branches branch ON branch.id = proyect.branch_id
                WHERE proyect.id != 0 and proyect.revocado = 0";

        $results = $this->EvaluationConstraint->query($sql);

        // The column headings of your .csv file
        $header_row = array("Territorial", "Código", "Tipo condicionamiento", "Calificación condicionamiento", "Fecha levantamiento condicionamiento", "Descripción condicionamiento", "Fecha publicación", "CALIFICACIÓN FASE IIB");

        $newRow = array();

        foreach ($header_row as $a) {
            $newRow[] = iconv('UTF-8', 'Windows-1252', $a);
        }
        //Se agrega el encabezado al reporte.
        fputcsv($csv_file, $newRow, ';', '"');

        $evaluacionFinal = new FinalEvaluation();
        $evaluacionFinal->recursive = 0;

        foreach ($results as $result) {

            //busco el id de la ultima evaluación final hecha al proyecto.
            $final_evaluation_id = $evaluacionFinal->field('FinalEvaluation.id', array('FinalEvaluation.proyect_id' => $result['proyect']['id']), 'FinalEvaluation.id DESC');
            $evaluacion = $evaluacionFinal->find('first', array('conditions' => array('FinalEvaluation.id' => $final_evaluation_id), 'fields' => array('FinalEvaluation.calificacion_anexos', 'FinalEvaluation.calificacion_ubicacion', 'FinalEvaluation.calificacion_area_util',
                    'FinalEvaluation.calificacion_suelos', 'FinalEvaluation.calificacion_claseV', 'FinalEvaluation.calificacion_mejoras_santuarias', 'calificacion_aspectos_productivos', 'calificacion_aspectos_sociales', 'calificacion_aspectos_financieros', 'calificacion_aspectos_ambientales', 'calificacion_elegibilidad_integral'
                    )));


            //busco los condicionamientos que tiene la evaluación final
            $condicionamientos = $this->EvaluationConstraint->find('all', array('conditions' => array('EvaluationConstraint.final_evaluation_id' => $final_evaluation_id), 'fields' => array('EvaluationConstraint.descripcion', 'EvaluationConstraint.calificacion', 'EvaluationConstraint.observaciones_levantamiento', 'EvaluationConstraint.fecha_levantamiento', 'Constraint.nombre')));

            //se obtiene la calificación de la fase IIB
            //calculo la viabilidad integral
            $viabilidad_integral = "Cumple";

            $criterios_evaluacion = "Cumple";
            if ($evaluacion['FinalEvaluation']['calificacion_anexos'] != 'Cumple' || $evaluacion['FinalEvaluation']['calificacion_ubicacion'] != 'Cumple' || $evaluacion['FinalEvaluation']['calificacion_area_util'] != "Cumple" || $evaluacion['FinalEvaluation']['calificacion_suelos'] != "Cumple" || $evaluacion['FinalEvaluation']['calificacion_claseV'] != "Cumple" || $evaluacion['FinalEvaluation']['calificacion_mejoras_santuarias'] != "Cumple") {
                $criterios_evaluacion = "No cumple";
            }

            //busco el id del proyecto que tiene la evaluación

            App::Import('model', 'Property');
            $property = new Property();
            $property->recursive = -1;

            App::Import('model', 'FinalEvaluationAnnex');
            $finalEvaluationAnnexes = new FinalEvaluationAnnex();
            $finalEvaluationAnnexes->recursive = -1;

            App::Import('model', 'EvaluationAppraisal');
            $evaluationAppraisal = new EvaluationAppraisal();
            $evaluationAppraisal->recursive = -1;

            App::Import('model', 'TitleStudy');
            $titleStudy = new TitleStudy();
            $titleStudy->recursive = -1;

            App::Import('model', 'QualityControl');
            $qualityControl = new QualityControl();
            $qualityControl->recursive = -1;
            App::Import('model', 'TitleStudyClaim');
            $TitleStudyClaim = new TitleStudyClaim();

            //busco los avaluos relacionados con esta evaluación

            $anexos = $finalEvaluationAnnexes->find('all', array('conditions' => array('FinalEvaluationAnnex.final_evaluation_id' => $evaluacion['FinalEvaluation']['id'])));

            $calificacion_avaluos = "Cumple";
            foreach ($anexos as $anexo) {
                if ($evaluationAppraisal->field('calificacion', array('EvaluationAppraisal.id' => $anexo['FinalEvaluationAnnex']['evaluation_appraisal_id'])) != 1) {
                    $calificacion_avaluos = "No cumple";
                }
            }

            //Busco el ultimo estudio de titulo de cada predio

            $calificacion_juridica = "Cumple";

            $predios = $property->find('all', array('conditions' => array('Property.proyect_id' => $result['proyect']['id']), 'fields' => array('Property.id')));

            foreach ($predios as $predio) {
                //busco el ultimo estudio de titulo del predio.

                $control = $qualityControl->find('first', array('conditions' => array('QualityControl.property_id' => $predio['Property']['id']), 'fields' => array('QualityControl.calificacion'), 'order' => array('QualityControl.id DESC')));
                $titulo = $titleStudy->find('first', array('conditions' => array('TitleStudy.property_id' => $predio['Property']['id']), 'fields' => array('TitleStudy.calificacion', 'TitleStudy.id'), 'order' => array('TitleStudy.id DESC')));

                if ($titulo['TitleStudy']['calificacion'] != "1") {

                    if ($reclamacion = $TitleStudyClaim->find('first', array('recursive' => -1, 'conditions' => array('TitleStudyClaim.title_study_id' => $titulo['TitleStudy']['id']), 'order' => array('TitleStudyClaim.id DESC')))) {
                        if ($reclamacion['TitleStudyClaim']['calificacion'] != "Desvirtúa la causal") {
                            $calificacion_juridica = "No cumple";
                        }
                    } else {
                        $calificacion_juridica = "No cumple";
                    }
                }
                if (!empty($control)) {
                    if ($control['QualityControl']['calificacion'] != 4) {
                        $calificacion_juridica = "No cumple";
                    }
                } else {
                    $calificacion_juridica = "No cumple";
                }
            }

            App::Import('Model', 'Poll');
            $poll = new Poll();
            $poll->recursive = -1;

            $encuesta = $poll->find('first', array('conditions' => array('Poll.proyect_id' => $result['proyect']['id']), 'fields' => array('Poll.verificacion_fase_uno', 'Poll.visto_bueno', 'Poll.calificacion_caracteristicas_biofisicas', 'Poll.calificacion_sociales', 'Poll.calificacion_economicos', 'Poll.calificacion_ambientales'), 'order' => array('Poll.id DESC')));

            $calificacion_encuesta = '';

            if ($encuesta['Poll']['calificacion_caracteristicas_biofisicas'] == null or $encuesta['Poll']['calificacion_sociales'] == null
                    or $encuesta['Poll']['calificacion_economicos'] == null or $encuesta['Poll']['calificacion_ambientales'] == null or
                    $encuesta['Poll']['calificacion_caracteristicas_biofisicas'] == '' or $encuesta['Poll']['calificacion_sociales'] == ''
                    or $encuesta['Poll']['calificacion_economicos'] == '' or $encuesta['Poll']['calificacion_ambientales'] == ''
            ) {
                $calificacion_encuesta = 'No cumple';
            } else if ($encuesta['Poll']['verificacion_fase_uno'] == null or $encuesta['Poll']['visto_bueno'] == null or
                    $encuesta['Poll']['verificacion_fase_uno'] == 'Sin registro' or $encuesta['Poll']['visto_bueno'] == 'Sin registro') {
                $calificacion_encuesta = 'No cumple';
            } else if ($encuesta['Poll']['calificacion_caracteristicas_biofisicas'] == 'No cumple' or $encuesta['Poll']['calificacion_sociales'] == 'No cumple'
                    or $encuesta['Poll']['calificacion_economicos'] == 'No cumple' or $encuesta['Poll']['calificacion_ambientales'] == 'No cumple' or
                    $encuesta['Poll']['verificacion_fase_uno'] == 'No' or $encuesta['Poll']['visto_bueno'] == null
            ) {
                $calificacion_encuesta = 'No cumple';
            } else {
                $calificacion_encuesta = 'Cumple';
            }

            App::Import('Model', 'PollClaim');
            $pollClaim = new PollClaim();
            $pollClaim->recursive = -1;

            //busco la calificacion de la ultima reclamacion de fase IIA
            $calificacion_reclamacion_IIA = $pollClaim->field('PollClaim.calificacion', array('PollClaim.proyect_id' => $result['proyect']['id'], 'PollClaim.tipo' => 1), 'PollClaim.id DESC');
            if ($calificacion_reclamacion_IIA == 'Viable') {
                $calificacion_encuesta = 'Cumple';
            }

            if ($criterios_evaluacion != "Cumple" || $evaluacion['FinalEvaluation']['calificacion_aspectos_productivos'] != "Cumple" || $calificacion_avaluos != "Cumple" || $evaluacion['FinalEvaluation']['calificacion_aspectos_sociales'] != "Cumple" || $evaluacion['FinalEvaluation']['calificacion_aspectos_financieros'] != "Cumple" || $evaluacion['FinalEvaluation']['calificacion_aspectos_ambientales'] != "Cumple" || $evaluacion['FinalEvaluation']['calificacion_elegibilidad_integral'] != "Elegible" || $calificacion_juridica != "Cumple" || $calificacion_encuesta != "Cumple") {
                $viabilidad_integral = "No cumple";
            }

            //Se agrega la fila al reporte.
            foreach ($condicionamientos as $condicionamiento) {

                $row = array(
                    $result['branch']['nombre'],
                    $result['proyect']['codigo'],
                    $condicionamiento['Constraint']['nombre'],
                    $condicionamiento['EvaluationConstraint']['calificacion'],
                    $condicionamiento['EvaluationConstraint']['fecha_levantamiento'],
                    $condicionamiento['EvaluationConstraint']['descripcion'],
                    $result['proyect']['fecha_publicacion'],
                    $viabilidad_integral
                );

                $newRow = array();

                foreach ($row as $a) {
                    $newRow[] = iconv('UTF-8', 'Windows-1252', $a);
                }

                fputcsv($csv_file, $newRow, ';', '"');
            }
        }

        fclose($csv_file);
    }

    public function condicionamientos_por_proyecto() {
        $this->layout = 'csv';
        App::Import('model', 'FinalEvaluation');
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        date_default_timezone_set("America/Bogota");
        $filename = "Reporte_Condicionamientos_" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');

        $evaluacionFinal = new FinalEvaluation();
        $evaluacionFinal->recursive = 0;

        // Agrego la fila con las cabeceras
        $header_row = array("Código",
            "Dirección territorial",
            "Número familias habilitadas",
            "Área plano topográfico",
            "Valor subsidio",
            "Fecha de publicación",
            "Consolidado condicionamietos",
            "Tiene resolución",
            "Hipoteca",
            "Afectación a Vivienda Familiar (Transferencia De Dominio)",
            "Declaratoria de Zona de Desplazamiento Forzado por la violencia",
            "Área en Títulos",
            "Negociación",
            "Cabida Familiar",
            "Revisión de predios",
            "Observación",
            "Fecha de la resolución",
            "Número de la resolución"
        );

        $newRow = array();

        foreach ($header_row as $a) {
            $newRow[] = iconv('UTF-8', 'Windows-1252', $a);
        }
        //Se agrega el encabezado al reporte.
        fputcsv($csv_file, $newRow, ';', '"');

        //Busco todos los proyectos que han sido publicados como viables o condicionados
        $sql = "SELECT Proyect.id, Proyect.codigo, Resolution.id, Proyect.fecha_publicacion, Branch.nombre, Resolution.numero, Resolution.fecha, convocatoria.valor_smmv
            FROM proyects Proyect 
            LEFT JOIN branches Branch ON Branch.id = Proyect.branch_id
            LEFT JOIN resolutions Resolution ON Resolution.proyect_id = Proyect.id
            LEFT JOIN calls convocatoria ON convocatoria.id = Proyect.call_id
            WHERE Proyect.calificacion_faseIIB IN ('condicionado', 'cumple') and Proyect.call_id=1 and Proyect.revocado=0";

        $proyectos = $this->EvaluationConstraint->query($sql);

        foreach ($proyectos as $proyecto) {
            //Busco la ultima evaluación final

            $final_evaluation_id = $evaluacionFinal->field('FinalEvaluation.id', array('FinalEvaluation.proyect_id' => $proyecto['Proyect']['id']), 'FinalEvaluation.id DESC');
            $familiasHabilitadas = $evaluacionFinal->field('FinalEvaluation.familias_habilitadas', array('FinalEvaluation.proyect_id' => $proyecto['Proyect']['id']), 'FinalEvaluation.id DESC');
            $subsidio_predios_real = $evaluacionFinal->field('FinalEvaluation.subsidio_predios_real', array('FinalEvaluation.proyect_id' => $proyecto['Proyect']['id']), 'FinalEvaluation.id DESC');
            $subsidio_proyecto_real = $evaluacionFinal->field('FinalEvaluation.subsidio_proyecto_real', array('FinalEvaluation.proyect_id' => $proyecto['Proyect']['id']), 'FinalEvaluation.id DESC');

            //Busco los condicionamientos que tenga la ultima evaluación final del proyecto.

            $condicionamientos = $this->EvaluationConstraint->find('all', array('conditions' => array('EvaluationConstraint.final_evaluation_id' => $final_evaluation_id),
                'fields' => array('EvaluationConstraint.calificacion', 'Constraint.nombre')));

            $hipoteca = $afectacion = $declaratoria = $area = $cabida = $observacion = $negociacion = "No";

            foreach ($condicionamientos as $condicionamiento) {
                switch ($condicionamiento['Constraint']['nombre']) {
                    case "Condicionado por hipoteca":
                        if ($condicionamiento['EvaluationConstraint']['calificacion'] != 'NO LEVANTADO' and $hipoteca != 'NO LEVANTADO') {
                            if ($condicionamiento['EvaluationConstraint']['calificacion'] == 'LEVANTADO' and $hipoteca != 'CONDICIONADO') {
                                $hipoteca = 'LEVANTADO';
                            } else {
                                $hipoteca = 'CONDICIONADO';
                            }
                        } else {
                            $hipoteca = 'NO LEVANTADO';
                        }
                        break;
                    case "Condicionado por Afectación a Vivienda Familiar (Transferencia De Dominio)":
                        if ($condicionamiento['EvaluationConstraint']['calificacion'] != 'NO LEVANTADO' and $afectacion != 'NO LEVANTADO') {
                            if ($condicionamiento['EvaluationConstraint']['calificacion'] == 'LEVANTADO' and $afectacion != 'CONDICIONADO') {
                                $afectacion = 'LEVANTADO';
                            } else {
                                $afectacion = 'CONDICIONADO';
                            }
                        } else {
                            $afectacion = 'NO LEVANTADO';
                        }
                        break;
                    case "Condicionamiento por Declaratoria de Zona de Desplazamiento Forzado por  la":
                        if ($condicionamiento['EvaluationConstraint']['calificacion'] != 'NO LEVANTADO' and $declaratoria != 'NO LEVANTADO') {
                            if ($condicionamiento['EvaluationConstraint']['calificacion'] == 'LEVANTADO' and $declaratoria != 'CONDICIONADO') {
                                $declaratoria = 'LEVANTADO';
                            } else {
                                $declaratoria = 'CONDICIONADO';
                            }
                        } else {
                            $declaratoria = 'NO LEVANTADO';
                        }
                        break;
                    case "Condicionamiento de Área en Títulos.":
                        if ($condicionamiento['EvaluationConstraint']['calificacion'] != 'NO LEVANTADO' and $area != 'NO LEVANTADO') {
                            if ($condicionamiento['EvaluationConstraint']['calificacion'] == 'LEVANTADO' and $area != 'CONDICIONADO') {
                                $area = 'LEVANTADO';
                            } else {
                                $area = 'CONDICIONADO';
                            }
                        } else {
                            $area = 'NO LEVANTADO';
                        }
                        break;
                    case "Condicionado por Negociación":
                        if ($condicionamiento['EvaluationConstraint']['calificacion'] != 'NO LEVANTADO' and $negociacion != 'NO LEVANTADO') {
                            if ($condicionamiento['EvaluationConstraint']['calificacion'] == 'LEVANTADO' and $negociacion != 'CONDICIONADO') {
                                $negociacion = 'LEVANTADO';
                            } else {
                                $negociacion = 'CONDICIONADO';
                            }
                        } else {
                            $negociacion = 'NO LEVANTADO';
                        }
                        break;
                    case "Condicionamiento por Cabida Familiar":
                        if ($condicionamiento['EvaluationConstraint']['calificacion'] != 'NO LEVANTADO' and $cabida != 'NO LEVANTADO') {
                            if ($condicionamiento['EvaluationConstraint']['calificacion'] == 'LEVANTADO' and $cabida != 'CONDICIONADO') {
                                $cabida = 'LEVANTADO';
                            } else {
                                $cabida = 'CONDICIONADO';
                            }
                        } else {
                            $cabida = 'NO LEVANTADO';
                        }
                        break;
                    case "Observación":
                        if ($condicionamiento['EvaluationConstraint']['calificacion'] != 'NO LEVANTADO' and $observacion != 'NO LEVANTADO') {
                            if ($condicionamiento['EvaluationConstraint']['calificacion'] == 'LEVANTADO' and $observacion != 'CONDICIONADO') {
                                $observacion = 'LEVANTADO';
                            } else {
                                $observacion = 'CONDICIONADO';
                            }
                        } else {
                            $observacion = 'NO LEVANTADO';
                        }
                        break;
                    default:
                        break;
                }
            }

            $tiene_resolucion = (empty($proyecto['Resolution']['id'])) ? 'No' : 'Si';

            App::Import('model', 'PropertyFinalReview');
            $PropertyFinalReview = new PropertyFinalReview();
            App::Import('model', 'Property');
            $Property = new Property();
            $predios = $Property->find('all', array('conditions' => array('Property.proyect_id' => $proyecto['Proyect']['id']), 'fields' => array('Property.id')));
            $calPredios = "Cumple";
            foreach ($predios as $predio) {
                if ($revision = $PropertyFinalReview->find('first', array('conditions' => array('PropertyFinalReview.property_id' => $predio['Property']['id']), 'order' => array('PropertyFinalReview.id DESC'), 'fields' => array('PropertyFinalReview.calificacion')))) {
                    if ($revision['PropertyFinalReview']['calificacion'] == 'No cumple') {
                        $calPredios = "No cumple";
                        break;
                    } elseif ($revision['PropertyFinalReview']['calificacion'] == 'Sin registro') {
                        $calPredios = "Sin revisar";
                        break;
                    }
                } else {
                    $calPredios = "Sin revisar";
                    break;
                }
            }
            $consolidado = "";

            //Se calcula el consolidado de condicionamientos.
            if ($hipoteca == "NO LEVANTADO" or
                    $afectacion == "NO LEVANTADO" or
                    $declaratoria == "NO LEVANTADO" or
                    $area == "NO LEVANTADO" or
                    $negociacion == "NO LEVANTADO" or
                    $cabida == "NO LEVANTADO" or
                    $observacion == "NO LEVANTADO") {
                $consolidado = "NO LEVANTADO";
            } else if (
                    ($hipoteca == 'LEVANTADO' or $hipoteca == 'No') and
                    ($afectacion == 'LEVANTADO' or $afectacion == 'No') and
                    ($declaratoria == 'LEVANTADO' or $declaratoria == 'No') and
                    ($area == 'LEVANTADO' or $area == 'No') and
                    ($negociacion == 'LEVANTADO' or $negociacion == 'No') and
                    ($cabida == 'LEVANTADO' or $cabida == 'No') and
                    ($observacion == 'LEVANTADO' or $observacion == 'No')
            ) {
                if ($hipoteca == "LEVANTADO" or
                        $afectacion == "LEVANTADO" or
                        $declaratoria == "LEVANTADO" or
                        $area == "LEVANTADO" or
                        $negociacion == "LEVANTADO" or
                        $cabida == "LEVANTADO" or
                        $observacion == "LEVANTADO"
                ) {
                    $consolidado = "LEVANTADO";
                } else {
                    if ($calPredios == "No cumple") {
                        $consolidado = "NO LEVANTADO";
                    } else {
                        $consolidado = "NO TIENE";
                    }
                }
            } else {
                if ($calPredios == "No cumple") {
                    $consolidado = "NO LEVANTADO";
                } else {
                    $consolidado = "CONDICIONADO";
                }
            }

            //área de los predios
            //buscar los planos asociados a esta ultima evaluación.
            $annexes = new FinalEvaluationAnnex();
            $annexes->recursive = -1;
            $planos_id = $annexes->find('all', array('conditions' => array('FinalEvaluationAnnex.final_evaluation_id' => $final_evaluation_id), 'fields' => array('FinalEvaluationAnnex.topographic_map_id')));

            //sumar el área total de cada plano
            $planoTopografico = new TopographicMap();
            $planoTopografico->recursive = -1;

            $areaTotalPlanosTopograficos = 0;
            foreach ($planos_id as $plano_id) {
                $areaTotalPlanosTopograficos += $planoTopografico->field('TopographicMap.area', array('TopographicMap.id' => $plano_id['FinalEvaluationAnnex']['topographic_map_id']));
            }

            $row = array(
                $proyecto['Proyect']['codigo'],
                $proyecto['Branch']['nombre'],
                $familiasHabilitadas,
                number_format($areaTotalPlanosTopograficos, 4, ',', '.'),
                number_format($subsidio_predios_real + $subsidio_proyecto_real + $familiasHabilitadas * $proyecto['convocatoria']['valor_smmv'], 0, ',', '.'),
                $proyecto['Proyect']['fecha_publicacion'],
                $consolidado,
                $tiene_resolucion,
                $hipoteca,
                $afectacion,
                $declaratoria,
                $area,
                $negociacion,
                $cabida,
                $calPredios,
                $observacion,
                $proyecto['Resolution']['fecha'],
                $proyecto['Resolution']['numero'],
            );

            $newRow = array();

            foreach ($row as $a) {
                $newRow[] = iconv('UTF-8', 'Windows-1252', $a);
            }

            fputcsv($csv_file, $newRow, ';', '"');
        }

        fclose($csv_file);
    }

}

?>
